package secondStage.part6.函数式接口.常用的函数式接口.Consumer接口;

import java.util.function.Consumer;

/**
 * @ClassName: [ConsumerDemo]
 * @Description: Consumer接口
 * @Author: [黄劲松]
 * @CreateDate: [2021-04-24]
 * @Version: [v1.0]
 */
/*
1.6 Consumer接口
    Consumer<T>:包含两个方法
    void accept(T t):对给定的参数执行此操作
    defaultConsumer<T> andThen(Consumer after):返回一个组合的Consumer，依次执行此操作，然后执行after操作
    Consumer<T>接口也被称为消费型接口，它消费的数据的数据类型由泛型指定，
 */
public class ConsumerDemo {
    public static void main(String[] args) {
        /*operatorString("垃圾袋",(String s)->{
            System.out.println(s);
        });*/
        operatorString("垃圾袋",(s)-> System.out.println(s));
//        operatorString("垃圾袋",System.out::println);

        operatorString("林倾斜",s->{
            System.out.println(new StringBuilder(s).reverse().toString());
        });
        System.out.println("-----------------");
        operatorString("了就当是",s-> System.out.println(s),s-> System.out.println(new StringBuilder(s).reverse().toString()));
    }
    //定义一个方法，用不同的方法消费同一个字符串数据两次
    private static void operatorString(String name, Consumer<String> con,Consumer<String> con1) {
        /*con.accept(name);
        con1.accept(name);*/
        con.andThen(con1).accept(name);
    }
    //定义一个方法，消费一个字符串数据
    private static void operatorString(String name, Consumer<String> con){
        con.accept(name);
    }
}
